﻿using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.WindowsAPICodePack.Shell;
using PInvoke;

namespace Common.Util
{
    public class MP4Util
    {

        public static string GetMediaTimeLen(string path)
        {
            try
            {
                Shell32.Shell shell = new Shell32.Shell();
                //文件路径
                Shell32.Folder folder = shell.NameSpace(Path.GetDirectoryName(path));
                //文件名称
                Shell32.FolderItem folderitem = folder.ParseName(Path.GetFileName(path));
                if (Environment.OSVersion.Version.Major >= 6)
                {
                    return folder.GetDetailsOf(folderitem, 27);
                }
                else
                {
                    return folder.GetDetailsOf(folderitem, 21);
                }
            }
            catch (Exception ex) { return null; }
        }

        public static int GetMediaTimeLenSecond(string path)
        {
            try
            {
                Shell32.Shell shell = new Shell32.Shell();
                //文件路径
                Shell32.Folder folder = shell.NameSpace(shell.NameSpace(Path.GetDirectoryName(path)));
                //文件名称
                Shell32.FolderItem folderitem = folder.ParseName(Path.GetFileName(path));
                string len;
                if (Environment.OSVersion.Version.Major >= 6)
                {
                    len = folder.GetDetailsOf(folderitem, 27);
                }
                else
                {
                    len = folder.GetDetailsOf(folderitem, 21);
                }

                string[] str = len.Split(new char[] { ':' });
                int sum = 0;
                sum = int.Parse(str[0]) * 60 * 60 + int.Parse(str[1]) * 60 + int.Parse(str[2]);

                return sum;
            }
            catch (Exception ex) { return 0; }
        }

        public static Bitmap GetThumbnailByPath(string filePath)
        {
            ShellFile shellFile = ShellFile.FromFilePath(filePath);
            Bitmap thumbnail = shellFile.Thumbnail.ExtraLargeBitmap;
            return thumbnail;
        }

 

        private void button5_Click(object sender, EventArgs e)
        {
            //string FileName = @"C:\Users\Administrator\Documents\Tencent Files\853740877\FileRecv\1.2ArcGIS体系.mp4";
            //MessageBox.Show(GetMediaTimeLen(FileName) + ",秒数:" + GetMediaTimeLenSecond(FileName));
        }
    }
}
